/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
 var sumOfLeftLeaves = function(root) {
  if(root === null) return 0  // 如果是叶子节点就是0
  let leftSum = sumOfLeftLeaves(root.left) // 获取左子树的左叶子和 左右子树也可能有左右子树
  let rightSum = sumOfLeftLeaves(root.right) // 右子树的左叶子和
  let midValue = 0 // 左子树的和
  if(root.left && !root.left.left && !root.left.right){ // 当前节点的左子树存在  并且 当前节点的左子树的左右子树都不存在 当前节点的左子树就是叶子节点
    midValue = root.left.val // 中间的值就是左子树的叶子节点的值
  }
  return leftSum + rightSum + midValue // 三者相加
};